Many compute sites support a combination of enterprise and High Performance Computing (HPC) applications. HPC workloads tend to be comprised of a plurality of interdependent parallel processes that must run synchronously in time due to the large amount of inter-process communication. Typical HPC workloads execute on clusters of compute nodes interconnected by a low-latency network. Enterprise workloads, on the other hand, tend to be independent tasks that do not require a significant amount of inter-process communication.
Unfortunately, the compute infrastructure historically employed for an enterprise site does not closely resemble the compute infrastructure historically employed for HPC sites. Therefore, distinct compute sites have typically been employed for each workload type. It is anticipated, however, that HPC and enterprise computing systems will converge. For typical compute systems, there is significant pressure to support a variety of services using a shared converged infrastructure.
Coarrays are an extension of Fortran and allow a set of cooperative processes to share memory arrays. Each process (often referred to as an image) has its own private variables. Coarrays are variables that are visible on more than one image. Coarray Fortran employs a coarray parallel programming model that extends the array syntax of Fortran with indices to indicate the location of a data element across a set of cooperative processes.
In both HPC and enterprise environments, there is an emerging hardware architecture in which multi-tiered storage is employed. For example, the multi-tiered storage may comprise a “fast” storage tier and a “slow” storage tier, where “fast” and “slow” in this context are relative to one another. Thus, in order for HPC applications to be successfully deployed in a multi-tiered enterprise storage environment, a need exists for a coarray parallel programming model for multi-tiered enterprise storage architectures.